void crea_sarrow()
{
     for (int i=0;i<6;i++)                                                      // reset array
       arry[i][0]=-32;                                                           // y   posicion inicial
} 

void calc_sarrow(int x1,int y1, int x2, int y2 ,int limit)                                   // limit = limit for shots.
{
 int arraypos;                                                                   // position into array
 for (int i=0;i<limit;i++)
 {
  if (arry[i][0]<0) // si es menor de 0 esta libre
   {
    arraypos=i;
    arrcount[i][0]=0; // resetea el contador.
    break; // sale del bucle
    } 
  if (i==limit-1) return;                                                       // previene que no se escriba siempre sobre la posicion 0    
  }
  if (arraypos>6)  return;
 /* set angle for arrows */ 
   //angulo = int( (atan2(y-Oy,x -Ox)*180/pi);                                  // formula in degrees
   arrcount[arraypos][1] = int ( (atan2(y1-y2,x1 - x2) * 180) / PI )-90;        // calc angle for arrow direction (-90 for angle correction)  
 /* set variables */ 
 int dx1; int dy1; int dx2; int dy2;
 double m; double n; double u; double v; double s;
 /* init calcs */
 u=x2-x1;v=y2-y1;
 dx1=sgn(u);dy1=sgn(v);dx2=sgn(u);dy2=0;
 m=abs(int(u));n=abs(int(v));
 if (m < n) { dx2 = 0;dy2 = sgn(v);m = abs(int(v));n = abs(int(u)); } 
 s= m / 2;   
 for (int i=0;i<int(m)+500;i++)
 {
  arrx[arraypos][i]=x1;
  arry[arraypos][i]=y1;
  s = s + n;
  if (s > n) { s=s-m;x1=x1+dx1;y1=y1+dy1; }
   else { x1=x1+dx2;y1=y1+dy2; }
 }  // for
} // end

void enemy_sarrow(int limit)
{
  static int iTmpsarrow;                                                      // variable para calcular el tiempo
  int shotdelay=1000;
  if ( (SDL_GetTicks() - iTmpsarrow) < shotdelay)  return;                    // sale si es menor, velocidad de disparo en 350
 iTmpsarrow = SDL_GetTicks();    
    for (int a=0;a<6;a++)
       {
        if (knights[a].activo) 
         calc_sarrow(knights [a].x,knights [a].y,int(popolon.x),int(popolon.y),limit);
       }
}  
void pinta_sarrow(int limit)
{
  enemy_sarrow(limit); // first, create shots
  for (int i=0;i<6;i++)
   if (arry[i][0]>0)                                                           // paint shot if y>0
     {
       flecha.x=arrx[i][int(arrcount[i][0])];                                      // x
       if (flecha.x>video.ancho || flecha.x<0) arry[i][0]=-8; // set off sprite
       flecha.y=arry[i][int(arrcount[i][0])];                                      // y
       if (flecha.y>video.alto || flecha.y<0) arry[i][0]=-8; // set off sprite
       flecha.rotacionZ=arrcount[i][1];
       flecha.pinta(); 
       flecha.rotacionZ=0.0;                                                    // reset old rotation
       if (is_game_stop==false) arrcount[i][0]+=1.5;
       if (arrcount[i][0] > 3000) arrcount[i][0]=0;
 
       if (shield.visible && flecha.collision(&shield.rect)) 
         {
           Sescudo.play();
           shield_hits+=0.34;                                                   // inc hits
           arry[i][0]=-8;                                                      // turn sprite off
           arry[i][0]=-8; 
         } // if
 
       if (flecha.collision(&popolon.rect)) 
        {
         if (is_popolon_fire==true) 
          {
           arry[i][0]=-8;                                                      // turn sprite off
           arrx[i][0]=-8;           
          }
          if (is_popolon_invisible==false) vidas=6;                             // le quita una vida a popolon
         } 
      }   
}               
     
